<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>面试</title>
</head>

<body>
    <!-- IMPORT JS -->
    <script>
        /* 获取多个数组的“交集” */
        const arr1 = [1, 2, 3, 4, 4, 10],
            arr2 = [1, 1, 1, 4, 5, 10],
            arr3 = [4, 10, 12];
        const diffArray = function diffArray(...params) {
            // params数组有多项，每一项是传递进来的数组，例如：[[1, 2, 3...],[1, 1, 1...],[4, 10, 12]]
            // 1.取出长度最短的数组「把params按照每一项长度由小到大排序，第一项就是最短的」
            let minArr = params.sort((a, b) => a.length - b.length).shift();

            // 2.拿长度最短的数组，分别和剩下的params集合中，每一项数组进行比较，取出对应的交集；例如：先和第一项比较，交集是[4,10]，然后再基于[4,10]和第二项比较，获取最新的交集，以此类推...直到都比较完成为止
            let n = 0;
            while (n < params.length) {
                let compare = params[n];
                minArr = minArr.filter(x => {
                    // 迭代短的数组，筛选出在短数组中存在，也在比较数组compare中存在的项，就是我们所需要的交集；
                    return compare.indexOf(x) > -1;
                });
                n++;
            }
            return minArr;
        };
        console.log(diffArray(arr1, arr2, arr3));
    </script>
</body>

</html>